<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>

// Promise对象的then方法链式调用
// p1.then().then().then()....

let p1 = new Promise((resolve,reject)=>{// 执行器函数
    // resolve(11);
    reject(22);
});
p1.then(
    (res)=>{// p1成功的回调函数
        console.log( 'p1成功，结果为',res );
        // 1.return返回非Promise对象值时，p2为成功状态，结果为返回的值
        // return undefined;// 默认
        // return 33;
        // return false;
        // return [1,2,3];

        // 2.return返回Promise对象值时，p2的状态和结果跟随返回的Promise对象
        // return new Promise((resolve,reject)=>{
        //     // resolve(44);
        //     reject(55);
        // });

        // 3.如果回调函数中有报错，p2为失败状态，结果为报错信息
        // olert('hello');

        // 4.如果回调函数中抛出一个值，p2为失败状态，结果为抛出的值
        // throw 66;
    },
    (res)=>{// p1失败的回调函数
        console.log( 'p1失败，结果为',res );
        // 1.return返回非Promise对象值时，p2为成功状态，结果为返回的值
        // return undefined;// 默认
        return 33;
        // return false;
        // return [1,2,3];

        // 2.return返回Promise对象值时，p2的状态和结果跟随返回的Promise对象
        // return new Promise((resolve,reject)=>{
        //     // resolve(44);
        //     reject(55);
        // });

        // 3.如果回调函数中有报错，p2为失败状态，结果为报错信息
        // olert('hello');

        // 4.如果回调函数中抛出一个值，p2为失败状态，结果为抛出的值
        // throw 66;
    }
)// p2 
// 思考，p2的状态和结果取决于什么？
// 简单讲，p2的状态和结果取决于p1成功/失败回调函数的返回值，详情请看上面1 2 3 4点
.then(
    (res)=>{// p2成功的回调函数
        console.log( 'p2成功，结果为',res );
    },
    (res)=>{// p2失败的回调函数
        console.log( 'p2失败，结果为',res );
    }
)// p3
// 简单讲，p3的状态和结果取决于p2成功/失败回调函数的返回值，详情请看上面1 2 3 4点
.then(
    (res)=>{// p3成功的回调函数
        console.log( 'p3成功，结果为',res );
    },
    (res)=>{// p3失败的回调函数
        console.log( 'p3失败，结果为',res );
    }
)

</script>
</body>
</html>